#!/usr/bin/env python
# coding: utf-8

# In[ ]:


# 尝试


# In[ ]:


# 1.地理编码


# In[6]:


import pandas as pd


# In[7]:


import requests
key_huang ="d4cabe86d5d6175e5ac8414c7903e81d"


# In[8]:


# 地理编码
def geocode(address,city=None,batch=None,sig=None)->dict:
    """获取地理编码"""
    url = 'https://restapi.amap.com/v3/geocode/geo?parameters'
    params={
        'key': key_huang,
        'address':address,
        'city':city,
        'batch':batch,
        'sig':sig,
        'output':'json'
    }
    response = requests.get(url,params=params)
    data = response.json()
    return data
中大 = geocode(address='广东省广州市海珠区中山大学')
print(中大)
df_中大地理编码 = pd.json_normalize(中大['geocodes'])
display(df_中大地理编码)
中大地理编码 = 中大['geocodes'][0]['location']
print("中大地理编码:",中大地理编码)


# In[14]:


# 2.路径规划 我个人认为这个模块使用了推荐算法，推荐用户个人喜欢的路径，如最短路径，最少红绿灯的路径等等。
# 还有计算机视觉，类似于谷歌的街景地图。


# In[15]:


# B-1 准备base url、params、response.json（） 
def walking(origin,destination,sig=None)->dict:
    url = 'https://restapi.amap.com/v3/direction/walking?parameters'
    params={
        'key':key_huang,
        'origin':origin,
        'destination':destination,
        'output':'json'
    }
    response = requests.get(url,params=params)
    data = response.json()
    return data


# In[16]:


# B-2 准备walking 参数
广州花城汇 = geocode('广州市天河区花城大道89号花城广场')
广州花城汇_location = 广州花城汇['geocodes'][0]['location']
中大_location = 中大['geocodes'][0]['location']
print("(起点)中大_location:",中大_location,"(终点)广州花城汇_location:",广州花城汇_location)


# In[17]:


# B-3 路径规划
中大_广州花城汇 = walking(中大_location,广州花城汇_location)
df_步行路径规划 = pd.json_normalize(中大_广州花城汇["route"]["paths"][0]['steps'])
display(df_步行路径规划)
df_步行路径规划["instruction"]


# In[ ]:


# 3.搜索POI


# In[ ]:


# 关键字搜索 我认为可能有语音识别的内容，通过用户说出想要搜索的内容，达到录入的功能。


# In[24]:


def place_text(keywords,types,city=None,citylimit=None,children=None,page=None,extensions='base',sig=None)->dict:
    url = 'https://restapi.amap.com/v3/place/text?parameters'
    params={
        'key':key_huang,
        'keywords':keywords,
        'types':types,
        'city':city,
        'citylimit':citylimit,
        'children':children,
        'page':page,
        'extensions':extensions,
        'output':'json'
    }
    response = requests.get(url,params=params)
    data = response.json()
    return data

广州_大学 = place_text('大学','高等院校',city="广州市",children=1,extensions='all')
广州_大学


# In[25]:


df_广州_大学 = pd.json_normalize(广州_大学["pois"])
df_广州_大学_广东工业大学 = pd.json_normalize(广州_大学["pois"][7]["children"])
display(df_广州_大学,df_广州_大学_广东工业大学)


# In[ ]:


# 4 静态地图 我认为可能有计算机视觉和语音识别的内容。语音识别实现录入功能，而计算机视觉实现图片地图展示等内容。


# In[ ]:


from PIL import Image
from io import BytesIO

i = Image.open(BytesIO(r.content))


# In[36]:


from PIL import Image
from io import BytesIO
def staticmap(location,zoom,size=None,scale=1,markers=None,labels=None,paths=None,traffic=0,page=None,sig=None)->dict:
    url = 'https://restapi.amap.com/v3/staticmap?parameters'
    params={
        'key':key_huang,
        'location':location,
        'zoom':zoom,
        'size':size,
        'scale':scale,
        'markers':markers,
        'labels':labels,
        'paths':paths,
        'traffic':traffic,
        'sig':sig,
        'output':'json'
    }
    response = requests.get(url,params=params)
    data = Image.open(BytesIO(response.content))
    return data


# In[37]:


staticmap(location=中大_location,zoom=16)


# In[ ]:


# 设计一个应用


# In[ ]:


# 可以在自己所在的地方拍张照片打开，然后发定位，拍照生成天气以及地理定位，然后发送。当想知道不是自己所在区域的天气和路径状况的时候，
# 可以去搜索，然后进行选择，可以通过官方给的数据和别人上传的照片，得知自己想要的信息。
# 天气查询api，行政区划查询api,坐标转换api。

